package com.ccys.db.vo.doctor.login;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

/**
 * @ClassName: ProfileVo
 * @Description:
 * @Author: billyhu
 * @Date: 2024/2/8 15:08
 */
@Data
public class ProfileVo {
    private String id;


    @JsonProperty("access_token")
    private String accessToken;

    private String code;

    @JsonProperty("first_name")
    private String firstName;

    @JsonProperty("last_name")
    private String lastName;

    @JsonProperty("license_no")
    private String licenseNo;

    private String gender;

    private String email;

    @JsonProperty("total_consulation")
    private int totalConsulation;

    private String professional;

    @JsonProperty("country_of_residence")
    private String countryOfResidence;

    @JsonProperty("years_of_practice")
    private String yearsOfPractice;

    @JsonProperty("profile_photo")
    private String profilePhoto;

    @JsonProperty("signature_photo")
    private String signaturePhoto;

    @JsonProperty("date_of_brith")
    private String dateOfBrith;

    @JsonProperty("is_available")
    private boolean isAvailable;

    @JsonProperty("pending_available")
    private boolean pendingAvailable;

    @JsonProperty("refresh_token")
    private String refreshToken;

    @JsonProperty("clinic_name")
    private String clinicName;

    @JsonProperty("allow_offline_consult")
    private String allowOfflineConsult;

    @JsonProperty("allow_walk_in_services")
    private String allowWalkInServices;

    @JsonProperty("allow_home_base_services")
    private String allowHomeBaseServices;

    @JsonProperty("allow_prescription_for_online_consult")
    private String allowPrescriptionForOnlineConsult;

    @JsonProperty("is_allow_approve_medication")
    private int isAllowApproveMedication;

    @JsonProperty("allow_prescription_for_in_clinic_consult")
    private String allowPrescriptionForInClinicConsult;

    private String ringtone;

    @JsonProperty("is_enable_sound")
    private boolean isEnableSound;

    @JsonProperty("panel_type")
    private int panelType;

    @JsonProperty("allow_text_based_consult")
    private boolean allowTextBasedConsult;

    private String awards;

    private String educations;

    private String certifications;

    private Integer status;

    private Integer jobStatus;

    private Integer jobSubStatus;

    private String languages;

    @JsonProperty("have_one_doctor")
    private boolean haveOneDoctor;

    @JsonProperty("online_status")
    private boolean onlineStatus;

    @JsonProperty("company_name")
    private String companyName;

    @JsonProperty("is_allow_booking")
    private boolean isAllowBooking;

    @JsonProperty("is_on_consult_appointment")
    private boolean isOnConsultAppointment;

    @JsonProperty("doctor_type")
    private String doctorType;

    @JsonProperty("active_booking")
    private ActiveBooking activeBooking;

    private Integer showDoctorWithoutRoster;

    private Integer isAsa;


    @Data
    public static class ActiveBooking{
        private String id;

        private String code;

        @JsonProperty("created_on")
        private String createdOn;

        private int age;

        private String type;

        @JsonProperty("consulation_type")
        private String consulationType;

        //参考1.0函数get_bookingstatus
        private String status;

        private int deliveryType;

        @JsonProperty("patient_waited")
        private int patientWaited;

        private String email;

        @JsonProperty("location_address")
        private String locationAddress;

        @JsonProperty("location_unit_number")
        private String locationUnitNumber;

        @JsonProperty("location_postal_code")
        private String locationPostalCode;

        @JsonProperty("location_country")
        private String locationCountry;

        @JsonProperty("location_state")
        private String locationState;

        @JsonProperty("location_city")
        private String locationCity;

        private String ringtone;

        @JsonProperty("consult_type")
        private int consultType;

        @JsonProperty("is_selected_doctor")
        private boolean isSelectedDoctor;

        private String memId;

        private String patientMemId;

        private ActiveBookingMember member;

        private List<ActiveBookingPassConsultation> pass_consultations;
    }

    @Data
    public static class ActiveBookingMember{
        private String id;

        @JsonProperty("first_name")
        private String firstName;

        @JsonProperty("last_name")
        private String lastName;

        @JsonProperty("nric_fin")
        private String nricFin;

        @JsonProperty("date_of_birth")
        private String dateOfBirth;

        private String email;

        private String gender;

        @JsonProperty("mem_phone")
        private String memPhone;

        @JsonProperty("mem_home_address")
        private String memHomeAddress;

        @JsonProperty("profile_photo")
        private String profilePhoto;

        private ActiveBookingChild child;
    }

    @Data
    public static class ActiveBookingChild{
        private String email;

        private String id;

        @JsonProperty("first_name")
        private String firstName;

        @JsonProperty("last_name")
        private String lastName;

        @JsonProperty("nric_fin")
        private String nricFin;

        private String gender;

        @JsonProperty("singpass_gender")
        private String singpassGender;

        private String relationShip;

        private Integer age;

        @JsonProperty("date_of_birth")
        private String dateOfBirth;

        @JsonProperty("profile_photo")
        private String profilePhoto;
    }

    @Data
    public static class ActiveBookingPassConsultation{
        private String id;

        @JsonProperty("created_on")
        private String createdOn;

        private String symptoms;

        private Long createdOnUtc;
    }


}
